Cauchy decryptme - HTB this shit! by shield

Witam..

Co prawda decryptme ju zamane zostao przez agenta/HTB, ale rozwizanie oparte jest na telefonie do przyjaciela. Niestety nie zawsze znajdzie si osoba, ktra wycignie do nas pomocn do. Tego wanie sprbuje nas nauczy ten tekcik, jak to rozgry samemu w domowym zaciszu, czyli 'how to break this shit' :)

Moja przygoda z tym programikiem produkcji Cauchy'ego zacza si w momencie, gdy niejaki Tymon (hi!) odkry jak do mnie zagada na priv :) Oczywicie lenistwo zobowizuje wic pierwsze co zrobiem to zaoyem tak jak agent (btw. co masz do "wiecznie pijanych craxorow" :), e dugo klucza to 22 znaki. Co z tego wyszo nie chce mwi, rzuciem tym badziewiem o cian, a potem za okno (hi Cybult :) no ale potem zaczo si...

Pierwsze co powinnimy zrobi to stara si za pomoc wszelkich dostpnych rodkw odkry jak dugo ma klucz (miaem pierwsz wersj decryptme, nie byo napisane tam jak dugo ma klucz). Mona zgadywa, zapali co nieco, mona tez postpi tak, jak zrobiliby to niektrzy, ci ktrzy czytali 'kryptoanaliza - podstawy' (pozdro dla autora ;) mianowicie, przesuwamy nasz kryptogram o pewn ilo w lewo (usuwamy pocztkowe litery) i xor'ujemy to z naszym oryginalnym kryptogramem. Robimy tak dla wielu przesuni, dla ilu? Skoro kryptogram ma 264 znaki, to eby to byo w miar amliwe, klucz powinien by minimum ze 3-4 razy krtszy od tego, zatem sprawdzamy moliwoci od 22 do 88 znakw. Oto co ciekawsze wyniki:

Przesuniecie | ilo zer
-------------+----------
        22   |   7
        24   |   6
        38   |   6
        42   |   6
        49   |   8
        53   |  10
        54   |   8
        68   |   6

Jak wida, najbardziej rzuca si w oczy przesunicie rwne 53. Tak wic nim si zajmiemy, dzielimy nasz kryptogram na wiersze, w kadym wierszu 53 kolumny.

1 - 3C 12 7F 19 0E 15 17 6F 04 0A 7B 44 13 09 6A 06 0C 1C 69 17 17 19 50
2 - 52 11 6C 06 13 54 2A 72 11 17 64 0D 0E 49 2F 08 1F 00 6B 17 52 31 1E
3 - 13 53 47 05 12 15 0B 69 50 53 53 0A 17 0A 78 02 00 59 7D 1B 06 1F 1E
4 - 52 36 79 0E 1B 06 04 71 17 53 7F 44 14 09 6E 18 0B 10 62 5E 37 18 14
5 - 05 16 39 4A 0E 1B 45 6C 0C 09 6F 0A 02 0F 62 05 0C 1C 6D 5E 11 1C 15

1 - 1C 07 1D 14 00 26 15 68 62 14 12 06 00 7C 5F 1C 16 5E 2C 12 1A 19 7D
2 - 0E 17 5C 46 2B 67 0B 70 77 46 00 09 18 33 0F 17 1A 16 17 04 1A 15 3E
3 - 12 1F 1B 46 16 6F 14 27 61 46 15 15 0D 77 1E 0F 17 07 1B 08 40 1F 64
4 - 16 01 1D 0B 45 7C 10 70 72 1C 0C 02 0F 69 1E 14 10 5E 12 05 13 10 77
5 - 14 53 01 12 12 69 03 7D 73 08 0C 06 4C 64 13 19 0A 10 1D 07 0F 5C 74

1 - 0E 69 15 2F 3B 00 09
2 - 1D 2C 15 6A 04 0B 1B
3 - 06 7F 1E 6C 16 52 0A
4 - 47 62 16 6A 5E 1F 1F
5 - 02 76 06 64 1F 5C

Mamy zatem 5 dugich wierszy, kady z nich zaszyfrowany tym samym kluczem. Pierwsze co mi przyszo do gowy to, e w tekcie pewnie wystpuj spacje, jako, e klucz sam w sobie jest xorowany, wic nie bdzie dla nas uatwienia w postaci, e bdziemy 'widzie' mae bd wielkie litery. Przypominam, wielka litera xor spacja to maa litera i vice versa. Jednak mimo wszystko spacja wystpi musi... I to nie raz. Xor ma to do siebie, e jest bardzo ciekaw funkcj logiczn :) pomaga w wielu sytuacjach, pomoe nam i tu. Ot jeli bdziemy xorowa kolejne litery alfabetu przez jeden i ten sam znak to wyniki tego bd mniej wicej w jakiej granicy, pewnie mona by to matematycznie udowodni, nie w tym jednak rzecz. Wane jest to, e tak si dzieje. Przykadowo zxorujmy 'a', 'g', 'l' i 'w' przez powiedzmy 45h.

A xor 45h = 24h     g xor 45h = 22h
L xor 45h = 29h     w xor 45h = 32h

Prawda, e w miar podobne wyniki, a teraz zxorujmy spacj przez 45h:
Spacja xor 45h = 65h, wyranie odstaje od pozostaych wynikw, to samo bdzie z przecinkiem, czy kropk:

, xor 45h = 69h
. xor 45h = 6Bh

No dobra ale w czym nam to pomoe? Ot wiadomo (z prawdopodobiestwa), e w danej kolumnie bdzie wicej liter ni znakw interpunkcyjnych. Czyli jeli zamy mamy przykadowo kolumn:

 a (61h)         |           S (53h)
 r (72h)         |           @ (40h)
 b (62h)      xor 32h        P (50h)
 . (2Eh)         |           L (1Ch)
 m (6Dh)         |           _ (5Fh)

To jesli j sxorujemy przez jaki znak (np. 32h) to powstanie inna kolumna. Jak wida 2Eh z pierwszej kolumny znacznie rni si od pozostaych wartoci, to samo jest w drugiej kolumnie, warto 1Ch wybija si z tumu sxorowanych.

Sprbujemy zaraz takie wybijajce si miejsca xorowa ze spacj aby odzyska cz klucza i odszyfrowa dan kolumn.. Wiadomo, e spacja znacznie czciej w tekcie wystpuje ni kropka czy przecinek, jednak czasami rownie i te znaki si pojawiaj. Jak sobie z tym poradzi? Ot zasada pisania dowolnych tekstw jest taka, e po kropce czy przecinku zawsze stawia si spacje... To bdzie nasza pomoc... Ot jeli spotkamy w jednym wierszu, w dwch ssiadujcych ze sob kolumnach wartoci, ktre znacznie rni si od pozostaych, mozemy przyj, e jest to '. ' bd ', '. Kolejn pomoc moe by to, e najczciej kada kropka koczy zdanie.. A kade nastpne zdanie pisze si z wielkej litery.. Wyjtkiem jestem tu ja, co mona zobaczy po niniejszym tekcie :) no, ale po korekcie pewnie wszystko bdzie normalnie [edito:miejmy tak nadziej :)].Oczywicie nikt nam nie da gwarancji, e Cauchy wasnie taki tekst wzi do zaszyfrowania, jednak nic nie szkodzi sprbowa, poza tym dobry z niego chopak i na pewno nie kazaby nam cierpie takich katuszy :).

Dla pierwszej kolumny bdzie to wyglda tak:

 3C                        xor 72h         N (4Eh)
 52 xor 20h = 72h                            (20h)
 13                        xor 72h         a (61h)
 52 xor 20h = 72h                            (20h)
 05                        xor 72h         w (77h)

Widzimy, e w pierwszej kolumnie naszymi poszukiwanymi wartociami s 52h. Xorujemy to przez spacj aby uzyska pierwszy znak hasa. Nastpnie ca kolumn xor'ujemy przez ten znak, aby uzyska j odszyfrowan. Widzimy, e pierwsza kolumna wyglda bardzo 'ludzko'. adnych krzaczkw i nawet pierwsza pocztkowa litera jest wielka.

Sprawdmy jeszcze 3 i 4 kolumn, mamy tam wanie tak sytuacj jak wczeniej opisywaem, dwie stojce obok siebie wartoci rni si od innych w swoich wasnych kolumnach.

K:  3  4  5
   7F 19 0E
   6C 06 13
   47 05 12
   79 0E 1B
   39 4A 0E

Dlaczego wziem 3 kolumny? eby sprawdzi czy litera po zakadanej spacji w 4 kolumnie jest wielka czy nie (mwi o wartoci 0Eh), ta warto raczej nie rni si niczym od pozostaych, jest wic maa litera. Zatem zakadamy, e te wartoci (39h 4Ah) to przecinek i spacja. Sprawdmy:

39h xor 2Ch = 15h (trzeci kolumn xorujemy przez 15h)

4Ah xor 20h = 6Ah (czwart kolumn xorujemy przez 6Ah)

K:  3 4
    j s
    y l
    R o
    l d

Wyglda to cakiem poprawnie. Zrbmy to teraz z caym tekstem i zobaczmy co nam wyjdzie:

Najs-ar-zy- -le--e-ie- -tore -o-r--lo -- --zecie- Er-
 byl- O-od-i-, --y-i -n-d. Na-w- --t p--h--zi z -ezy-
A Ro-an-. -n-ow-- -et-n-li si- - --ada--y-- czas-ch -
 Eld-ra-i - -la--i- E-d-row z-w-z--cza-- --sli n-e m-
We, -o -rz-n-jm--e- c-e- stwo-z-n-- wl--n--o jez-ka.

    -  -  - -  -- -  - -     - - --   -- --     -   -

mudna praca, ale za to jakie efekty :) zostao nam 20 nierozpoznanych znakw hasa z 53. Chyba niele, nie? Co teraz? Teraz mona prosto wzi sownik do rki i szuka pasujcych wyrazw, z tym raczej kady sobie poradzi :) najlepiej byoby mie program tea z polskim sownikiem, niestety ja takowego nie posiadam. Bez problemw jednak wida ostatni wyraz, dziki niemu kolejne, kolejne i tak do koca. Wemy na przykad pod uwag pierwsze sowo z drugiego wiersza, byl-, na moje oko s trzy jego kombinacje "bylo", "byli" i "byla". Mamy rwnie w ostatnim wierszu sowo -o.  Jeli wemiemy pod uwag te 3  powysze sowa to sowo -o moe brzmie: "|o", "to" i "ro". Oczywicie tym wyrazem bdzie "to". I do koca tak brn otrzymamy piknie odszyfrowany tekst w postaci:

Najstarszym plemieniem ktre dotrwalo do Trzeciej Ery
 byli Onodrim, czyli Enyd. Nazwa ent pochodzi z jezyk
A Rohanu. Entowie zetkneli si w pradawnych czasach z
 Eldarami i wlasnie Eldarow zawdzieczali jesli nie mo
We, to przynajmniej chec stworzenia wlasnego jezyka.

Majc ju prawidowy tekst nie jest chyba problemem otrzymanie poprawnego kluczyka :)

To by byo na tyle.

Pozdrowionka dla

- chemikw z Karolinki za zajebist wdk :)
- cXm, myst wiecie gdzie mieszka ;)
- znajomych abstynentw z polibudy ;)
- idlerw z unders'w, ict, aaocg, htb, xt, tkm! i c4u

--
shield/un&ict